// Package coding_round_1 1_102
// @Title coding_round_1
// @Description
// @Author  == 琳琳也叫王木木 ==  2021/9/3 20:35
// @Create  2021/9/3 20:35
package coding_round_1

func LevelOrder(root *TreeNode) [][]int {
	if root == nil {
		return nil
	}
	ans := [][]int{}           // 接受结果集的二维数组
	queue := []*TreeNode{root} // 创建队列，并将头节点入队
	// 循环遍历 如果对列不为空
	for len(queue) > 0 {
		size := len(queue) // 获取当前队列的大小
		tempArr := []int{}
		for i := 0; i < size; i++ {
			// 从队列中弹出一个元素
			node := queue[0]
			queue = queue[1:]
			tempArr = append(tempArr, node.Val)
			if node.Left != nil {
				queue = append(queue, node.Left)
			}
			if node.Right != nil {
				queue = append(queue, node.Right)
			}
		}
		ans = append(ans, tempArr)
	}
	return ans
}
